/*
 * File:   typesFollow.h
 * Author: Mohan
 *
 * Created on 15 juillet 2012, 15:13
 */

#ifndef TYPESFOLLOW_H
#define	TYPESFOLLOW_H

class FollowAction {
public:
    enum Actions
    {
        NoAction,
        North,
        East,
        South,
        West
    };
    FollowAction();
    FollowAction(const int& v);
    virtual ~FollowAction();
    int index() const;
    Actions getValue() const;
    void setValue(const Actions& v);
    const static int size = 5;
private:
    Actions m_value;
};

class FollowState {
public:
	typedef struct States
	{
		bool follow1;
		int posX;
		int posY;
	};
	FollowState();
    FollowState(const int& v);
    virtual ~FollowState();
    int index() const;
    States getValue() const;
    void setValue(const States& v);
    const static int size = 50;
private:
    States m_value;
};

class FollowObservation {
public:
    enum Observations{
    	Same,
    	North,
    	East,
    	South,
    	West,
    	Unseen
    };
    FollowObservation();
    FollowObservation(const int& v);
    virtual ~FollowObservation();
    int index() const;
    Observations getValue() const;
    void setValue(const Observations &v);
    bool isFinal() const;
    void setFinal(const bool &final);
    const static int size = 6;
private:
    Observations m_value;
    bool m_final;
};

#endif	/* TYPESFOLLOW_H */

